¿Qué es la EPH?
La Encuesta Permanente de Hogares, la EPH, es un revelamiento estadístico que brinda información oficial sobre la situación económica, social y demográfica de la población.
Gracias a la EPH podemos conocer los datos de Pobreza e indigencia, Tasa de desempleo,distribución del ingreso y condiciones de vida de los hogares entre otros indicadores
La encuesta tiene una muestra representativa de más de 120 mil casos que se construye a partir de la Muestra Maestra Urbana de Viviendas de la República Argentina Es un muestreo polietápico En la primer etapa, dentro de cada aglomerado, se selecciona una cantidad de radios censales o subdivisiones de los mismos (áreas).En la segunda etapa se listan todas las viviendas particulares de las áreas seleccionadas,para efectuar a partir de ese listado una selección aleatoria de viviendas. Los hogares que habitan esas viviendas son los hogares a encuestar.
La encuesta se hace con una frecuencia trimestral con una rotación de esquema 2-2-2 * Las viviendas de un área ingresan a la muestra para ser encuestadas en dos trimestres consecutivos, en el mes y semana asignados a ese área. * Se retiran por dos trimestres consecutivos. * Vuelven a la muestra para ser encuestadas en dos trimestres consecutivos en el mes y semana asignados a ese área.
En este taller vamos a aprender a:
- Cargar los datos directamente desde nuestra consola de R usando el
paquete
{eph} - Manipularlos usando
dplyrde{tidyverse}para observar indicadores básicos de trabajo - Construir una tabla usando la librería de gramática de tablas
{gt}
Antes de arrancar
Para poder trabajar ordenadamente te recomendamos:
Tener instaladas las librerías que vamos a usar con la función
install.packages():
{tidyerse},{gt},{gtExtras},
{Janitor} & {eph}
# install.packages("tidyverse")
# install.packages("gt")
# install.packages("gtExtras")
# install.packages("janitor")
# install.packages("eph")
Una buena práctica siempre que trabajes con encuestas es tener a mano:
- Los cuestionarios (te van a permitir entender bien la estructura y pases)
- El registro de diseño: donde tenes la referencia del código de pregunta, estructura y en caso que corresponda las categorías posibles que tiene que adoptar.
- Definiciones operacionales que realiza INDEC sobre condición de actividad, subocupación horaria y categoría ocupacional disponible aquí
Setup librerías
El primer paso es llamar a las librerías que vamos a usar que por lo general siempre las colocamos al principio de nuestro script
library(tidyverse) # para manipular los datos
library(eph) # para levantar los datos de la encuesta
library(janitor) # nos permite limpiar y acomodar facilmente los nombres de las variables (entre otras cosas)
library(gt) # para hermosear nuestras tablas
library(gtExtras) # para hermosear todavía más nuestras tablas
Obtener datos
Vamos a arrancar descargando los datos con la función
get_microdata(). En este caso vamos a descargar los
resultados de la base de individuos del primer trimestre de 2022. Si
quisieramos especificar una serie de variables en particular con las
cuales vamos a trabajar
TIP: Para revisar los parámetros de una función siempre podemos consultar la la ayuda de R posicionándonos sobre la función y presionando la tecla F1.
ind_2023_1 <- get_microdata(
year = 2023,
trimester = 1,
type = "individual",
vars = "all",
destfile = NA
)
En caso que no quieras o puedas usar este paquete podes descargar las bases de microdatos en el sitio del indec en la sección Bases de datos y descargar EPH continua
Vamos a reproducir la tabla 1.1 del Informe de Mercado de trabajo del primer trimestre 2023:
Primero creamos una tabla con los siguientes indicadores de resumen:
- Población
- Ocupados
- Desocupados
- PEA
- Ocupados demandantes
- Subocupados (demandantes, no demandantes y total)
Estos niveles nos van a permitir calcular las tasas de forma sencilla.
Para obtener cualquier tasa necesitamos crear un numerador y un denominador. Por ejemplo la tasa de empleo es el cociente entre \(Ocupados/Población\).
Al ser una muestra en la EPH trabajamos con el total expandido por su ponderador, en este caso lo encontramos en la variable PONDERA.
Para hacer la tabla vamos a trabajar con las siguientes variables de la base EPH:
- PONDERA: Que es el factor de expansión para cada unidad de análisis
- ESTADO: Que indica la condición de actividad y puede tomar los
valores:
- 0 = Entrevista individual no realizada (no respuesta al cuestionario individual)
- 1 = Ocupado
- 2 = Desocupado
- 3 = Inactivo
- 4 = Menor de 10 años
- PP03J: Que es la pregunta: Aparte de este/os trabajo/s, ¿estuvo
buscando algún empleo / ocupación /actividad? y que toma los valores:
- 1 = Sí
- 2 = No
- 9 = Ns/Nr
- INTENSI: Refiere a la intensidad de la carga horaria laboral y cuyas
categorías son:
- 1 = Subocupado por insuficiencia horaria
- 2 = Ocupado pleno
- 3 = Sobreocupado
- 4 = Ocupado que no trabajó en la semana
- 9 = Ns/Nr
Con la función summarise del paquete
{tidyerse} podemos realizar distintas operaciones de
resumen sobre las variables de nuestro análisis con la base que estamos
trabajando:
- Población: son la cantidad de personas que tiene la base es decir simplemente sumamos los valores de la variable PONDERA.
- Ocupación: En este caso, debemos agregar un filtro sobre la población, ya que solo queremos sumar los ponderadores de aquellas personas que se encuentran ocupadas. Esto lo hacemos indicando entre corchete [] el filtro. (La lógica seria: “Suma los valores de la columna PONDERA, solo para aquellos registros donde el ESTADO es igual a 1”)
- Desocupación: Con una lógica similar a la de Ocupación filtramos los casos que en la variable ESTADO tienen la categoría 2 (desocupado)
- PEA:(Población Económicamente Activa): es igual a la suma de la Población Ocupada y la desocupada.
- Ocupación demandante: Son el el conjunto de las personas ocupadas que estuvieron buscando otro trabajo.
- Subocupación demandante: Suma de quienes estando ocupados tienen una carga horaria (INTENSI ==1) que es insuficiente y que estuvieron buscando otra actividad
- Subocupación no demandante: Suma de quienes estando ocupados tienen una carga horaria (INTENSI ==1) que es insuficiente pero no estuvo buscando otra actividad
Tanto la ocupación como la desocupación constituyen lo que se denomina condición de actividad que define la situación en que se encuentran las personas con respecto a su participación o no en la actividad económica.
Tabla resumen
tabla_1 <- ind_2023_1 |>
summarise(Poblacion = sum(PONDERA),
Ocupacion = sum(PONDERA[ESTADO == 1]),
Desocupacion = sum(PONDERA[ESTADO == 2]),
PEA = Ocupacion + Desocupacion,
Ocupacion_demandate = sum(PONDERA[ESTADO == 1 & PP03J ==1]),
Suboc_demandante = sum(PONDERA[ESTADO == 1 & INTENSI ==1 & PP03J==1]),
Suboc_no_demand = sum(PONDERA[ESTADO == 1 & INTENSI ==1 & PP03J %in% c(2,9)]),
Subocupacion = Suboc_demandante + Suboc_no_demand)
tabla_1
| Poblacion | Ocupacion | Desocupacion | PEA | Ocupacion_demandate | Suboc_demandante | Suboc_no_demand | Subocupacion |
|---|---|---|---|---|---|---|---|
| 29335155 | 13191361 | 973787 | 14165148 | 2096890 | 898820 | 433638 | 1332458 |
Ahora vamos a calcular las tasas creando una serie de nuevas
columnas, usando la función mutate
tabla_1 <- tabla_1 |>
mutate('Actividad' = PEA/Poblacion,
'Empleo' = Ocupacion/Poblacion,
'Desocupación' = Desocupacion/PEA,
'Ocupación demandante' = Ocupacion_demandate/PEA,
'Subocupación' = Subocupacion/PEA,
'Subocupación demandante' = Suboc_demandante/PEA,
'Subocupación no demandante' = Suboc_no_demand/PEA)
tabla_1
| Poblacion | Ocupacion | Desocupacion | PEA | Ocupacion_demandate | Suboc_demandante | Suboc_no_demand | Subocupacion | Actividad | Empleo | Desocupación | Ocupación demandante | Subocupación | Subocupación demandante | Subocupación no demandante |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 29335155 | 13191361 | 973787 | 14165148 | 2096890 | 898820 | 433638 | 1332458 | 0.4828728 | 0.4496776 | 0.0687453 | 0.1480316 | 0.0940659 | 0.0634529 | 0.030613 |
Y ahora nos vamos a quedar solamente con las variables de las tasas
seleccionándolas con la función select
tabla_1 <- tabla_1 |>
select(Actividad:'Subocupación no demandante') |>
mutate(ANO4 = 2023,
TRIMESTRE = 1) |>
relocate(c(ANO4,TRIMESTRE), .before = 'Actividad')
tabla_1
| ANO4 | TRIMESTRE | Actividad | Empleo | Desocupación | Ocupación demandante | Subocupación | Subocupación demandante | Subocupación no demandante |
|---|---|---|---|---|---|---|---|---|
| 2023 | 1 | 0.4828728 | 0.4496776 | 0.0687453 | 0.1480316 | 0.0940659 | 0.0634529 | 0.030613 |
Ahora repetimos la operación con lo datos de 2022
# obtener los datos
ind_2022 <- get_microdata(
year = 2022,
trimester = c(1:4), # le decimos que traiga todos
type = "individual",
vars = "all",
destfile = NA
)
tabla_2 <- ind_2022 |>
group_by(ANO4,TRIMESTRE) |>
summarise(Poblacion = sum(PONDERA),
Ocupacion = sum(PONDERA[ESTADO == 1]),
Desocupacion = sum(PONDERA[ESTADO == 2]),
PEA = Ocupacion + Desocupacion,
Ocupacion_demandate = sum(PONDERA[ESTADO == 1 & PP03J ==1]),
Suboc_demandante = sum(PONDERA[ESTADO == 1 & INTENSI ==1 & PP03J==1]),
Suboc_no_demand = sum(PONDERA[ESTADO == 1 & INTENSI ==1 & PP03J %in% c(2,9)]),
Subocupacion = Suboc_demandante + Suboc_no_demand) |>
mutate('Actividad' = PEA/Poblacion,
'Empleo' = Ocupacion/Poblacion,
'Desocupación' = Desocupacion/PEA,
'Ocupación demandante' = Ocupacion_demandate/PEA,
'Subocupación' = Subocupacion/PEA,
'Subocupación demandante' = Suboc_demandante/PEA,
'Subocupación no demandante' = Suboc_no_demand/PEA) |>
select(ANO4,TRIMESTRE,Actividad:'Subocupación no demandante') |>
as_tibble()
## `summarise()` has grouped output by 'ANO4'. You can override using the
## `.groups` argument.
tabla_2
| ANO4 | TRIMESTRE | Actividad | Empleo | Desocupación | Ocupación demandante | Subocupación | Subocupación demandante | Subocupación no demandante |
|---|---|---|---|---|---|---|---|---|
| 2022 | 1 | 0.4652626 | 0.4328375 | 0.0696922 | 0.1552719 | 0.1001408 | 0.0686826 | 0.0314582 |
| 2022 | 2 | 0.4787680 | 0.4459337 | 0.0685808 | 0.1626771 | 0.1112706 | 0.0767532 | 0.0345174 |
| 2022 | 3 | 0.4763447 | 0.4424800 | 0.0710930 | 0.1602827 | 0.1103273 | 0.0759161 | 0.0344112 |
| 2022 | 4 | 0.4761494 | 0.4462386 | 0.0628180 | 0.1543240 | 0.1088660 | 0.0711074 | 0.0377586 |
Unimos ambas tablas usando la función bind_rows
tabla_3 <- bind_rows(tabla_1,tabla_2)
tabla_3
| ANO4 | TRIMESTRE | Actividad | Empleo | Desocupación | Ocupación demandante | Subocupación | Subocupación demandante | Subocupación no demandante |
|---|---|---|---|---|---|---|---|---|
| 2023 | 1 | 0.4828728 | 0.4496776 | 0.0687453 | 0.1480316 | 0.0940659 | 0.0634529 | 0.0306130 |
| 2022 | 1 | 0.4652626 | 0.4328375 | 0.0696922 | 0.1552719 | 0.1001408 | 0.0686826 | 0.0314582 |
| 2022 | 2 | 0.4787680 | 0.4459337 | 0.0685808 | 0.1626771 | 0.1112706 | 0.0767532 | 0.0345174 |
| 2022 | 3 | 0.4763447 | 0.4424800 | 0.0710930 | 0.1602827 | 0.1103273 | 0.0759161 | 0.0344112 |
| 2022 | 4 | 0.4761494 | 0.4462386 | 0.0628180 | 0.1543240 | 0.1088660 | 0.0711074 | 0.0377586 |
Ya tenemos los datos que necesitamos pero parece que la tabla
estuviera “acostada”. Para que se ponga de pie o estire a lo largo vamos
a usar la función pivot_longer
tabla_3 <- tabla_3 |>
pivot_longer(cols = -c(ANO4,TRIMESTRE), #Las columnas que queremos estirar en este caso son todas excepto el año y el trimestre
names_to = "Tasas", # El nombre que le queremos poner
values_to = "Valor") # el valor en cuestión que hay que repartir
tabla_3
| ANO4 | TRIMESTRE | Tasas | Valor |
|---|---|---|---|
| 2023 | 1 | Actividad | 0.4828728 |
| 2023 | 1 | Empleo | 0.4496776 |
| 2023 | 1 | Desocupación | 0.0687453 |
| 2023 | 1 | Ocupación demandante | 0.1480316 |
| 2023 | 1 | Subocupación | 0.0940659 |
| 2023 | 1 | Subocupación demandante | 0.0634529 |
| 2023 | 1 | Subocupación no demandante | 0.0306130 |
| 2022 | 1 | Actividad | 0.4652626 |
| 2022 | 1 | Empleo | 0.4328375 |
| 2022 | 1 | Desocupación | 0.0696922 |
| 2022 | 1 | Ocupación demandante | 0.1552719 |
| 2022 | 1 | Subocupación | 0.1001408 |
| 2022 | 1 | Subocupación demandante | 0.0686826 |
| 2022 | 1 | Subocupación no demandante | 0.0314582 |
| 2022 | 2 | Actividad | 0.4787680 |
| 2022 | 2 | Empleo | 0.4459337 |
| 2022 | 2 | Desocupación | 0.0685808 |
| 2022 | 2 | Ocupación demandante | 0.1626771 |
| 2022 | 2 | Subocupación | 0.1112706 |
| 2022 | 2 | Subocupación demandante | 0.0767532 |
| 2022 | 2 | Subocupación no demandante | 0.0345174 |
| 2022 | 3 | Actividad | 0.4763447 |
| 2022 | 3 | Empleo | 0.4424800 |
| 2022 | 3 | Desocupación | 0.0710930 |
| 2022 | 3 | Ocupación demandante | 0.1602827 |
| 2022 | 3 | Subocupación | 0.1103273 |
| 2022 | 3 | Subocupación demandante | 0.0759161 |
| 2022 | 3 | Subocupación no demandante | 0.0344112 |
| 2022 | 4 | Actividad | 0.4761494 |
| 2022 | 4 | Empleo | 0.4462386 |
| 2022 | 4 | Desocupación | 0.0628180 |
| 2022 | 4 | Ocupación demandante | 0.1543240 |
| 2022 | 4 | Subocupación | 0.1088660 |
| 2022 | 4 | Subocupación demandante | 0.0711074 |
| 2022 | 4 | Subocupación no demandante | 0.0377586 |
Vamos multiplicar por 100 el valor de la tasa ya que por lo general se expresa de esta forma, el cual redondeamos a un decimal.
tabla_3 <- tabla_3 |>
mutate(Valor = round(Valor*100,1))
tabla_3
| ANO4 | TRIMESTRE | Tasas | Valor |
|---|---|---|---|
| 2023 | 1 | Actividad | 48.3 |
| 2023 | 1 | Empleo | 45.0 |
| 2023 | 1 | Desocupación | 6.9 |
| 2023 | 1 | Ocupación demandante | 14.8 |
| 2023 | 1 | Subocupación | 9.4 |
| 2023 | 1 | Subocupación demandante | 6.3 |
| 2023 | 1 | Subocupación no demandante | 3.1 |
| 2022 | 1 | Actividad | 46.5 |
| 2022 | 1 | Empleo | 43.3 |
| 2022 | 1 | Desocupación | 7.0 |
| 2022 | 1 | Ocupación demandante | 15.5 |
| 2022 | 1 | Subocupación | 10.0 |
| 2022 | 1 | Subocupación demandante | 6.9 |
| 2022 | 1 | Subocupación no demandante | 3.1 |
| 2022 | 2 | Actividad | 47.9 |
| 2022 | 2 | Empleo | 44.6 |
| 2022 | 2 | Desocupación | 6.9 |
| 2022 | 2 | Ocupación demandante | 16.3 |
| 2022 | 2 | Subocupación | 11.1 |
| 2022 | 2 | Subocupación demandante | 7.7 |
| 2022 | 2 | Subocupación no demandante | 3.5 |
| 2022 | 3 | Actividad | 47.6 |
| 2022 | 3 | Empleo | 44.2 |
| 2022 | 3 | Desocupación | 7.1 |
| 2022 | 3 | Ocupación demandante | 16.0 |
| 2022 | 3 | Subocupación | 11.0 |
| 2022 | 3 | Subocupación demandante | 7.6 |
| 2022 | 3 | Subocupación no demandante | 3.4 |
| 2022 | 4 | Actividad | 47.6 |
| 2022 | 4 | Empleo | 44.6 |
| 2022 | 4 | Desocupación | 6.3 |
| 2022 | 4 | Ocupación demandante | 15.4 |
| 2022 | 4 | Subocupación | 10.9 |
| 2022 | 4 | Subocupación demandante | 7.1 |
| 2022 | 4 | Subocupación no demandante | 3.8 |
Ahora vamos a crear una variable que combina el año y trimestre, desechando año y trimestre como variables por separado y vamos a “estirar” la tabla colocando al 1er trimestre de 2021 al final, tal cual se presenta en el reporte de INDEC
#('Actividad','Empleo','Desocupación','Ocupación demandante','Subocupación','Subocupación demandante','Subocupación no demandante')
tabla_3 <- tabla_3 |>
mutate(ano_trimestre = paste(ANO4,TRIMESTRE)) |> # creamos la variable que concatena las etiquetas año y trimestre
select(-c(ANO4,TRIMESTRE)) |> # eliminamos las variables originales de año y trimestre
pivot_wider(names_from = c("ano_trimestre"), values_from = Valor) |> # estiramos la variable que creamos
relocate("2023 1",.after = "2022 4" ) # ubicamos al 1er trimestre de 2023 al final de la tabla
tabla_3
| Tasas | 2022 1 | 2022 2 | 2022 3 | 2022 4 | 2023 1 |
|---|---|---|---|---|---|
| Actividad | 46.5 | 47.9 | 47.6 | 47.6 | 48.3 |
| Empleo | 43.3 | 44.6 | 44.2 | 44.6 | 45.0 |
| Desocupación | 7.0 | 6.9 | 7.1 | 6.3 | 6.9 |
| Ocupación demandante | 15.5 | 16.3 | 16.0 | 15.4 | 14.8 |
| Subocupación | 10.0 | 11.1 | 11.0 | 10.9 | 9.4 |
| Subocupación demandante | 6.9 | 7.7 | 7.6 | 7.1 | 6.3 |
| Subocupación no demandante | 3.1 | 3.5 | 3.4 | 3.8 | 3.1 |
Las funciones
pivot_longerypivot_widernos ayudan a estirar y alargar los datos para saber más sobre ellas te recomendamos la lectura de esta viñeta donde vas a encontrar varios ejemplos.
Comunicación del dato
Ahora vamos a darle un poco de estilo y color con el paquete de
“gramática de tablas” {gt}
tabla_4 <- tabla_3 |>
gt() |>
# ponemos un título y subtitulo
tab_header(
title = md("**Principales tasas del mercado de trabajo. Total 31 aglomerados urbanos.**"),
subtitle = "Primer trimestre 2022-primer trimestre 2023") |>
# Elegimos una tipografía y tamaños
opt_table_font(
font = list(
google_font(name = "Montserrat"),
labels = list(
title = list(weight = "bold", size = 9),
header = list(weight = "bold", size = 8),
footnote = list(weight = "bold", size = 8),
source = list(weight = "bold", size = 8)
)
)
) |>
# centramos las columnas del cuerpo
cols_align(
align = "center",
columns = 2:6
) |>
# creamos una cabecera que agrupe cada año
gt::tab_spanner(
label = "2022",
columns = starts_with("2022")
) |>
gt::tab_spanner(
label = "2023",
columns = starts_with("2023")
) |>
# cambiamos las etiquetas de las columnas
cols_label("2022 1" = "1er Trimestre",
"2022 2" = "2do Trimestre",
"2022 3" = "3er Trimestre",
"2022 4" = "4to Trimestre",
"2023 1" = "1er Trimestre") |>
#agregamos un pié con la fuente y una aclaración indicando que nuestros datos están ponderados
tab_source_note('Fuente: INDEC, Encuesta Permanente de Hogares.') |>
tab_footnote("Datos ponderados.")
tabla_4
| Principales tasas del mercado de trabajo. Total 31 aglomerados urbanos. | |||||
| Primer trimestre 2022-primer trimestre 2023 | |||||
| Tasas | 2022 | 2023 | |||
|---|---|---|---|---|---|
| 1er Trimestre | 2do Trimestre | 3er Trimestre | 4to Trimestre | 1er Trimestre | |
| Actividad | 46.5 | 47.9 | 47.6 | 47.6 | 48.3 |
| Empleo | 43.3 | 44.6 | 44.2 | 44.6 | 45.0 |
| Desocupación | 7.0 | 6.9 | 7.1 | 6.3 | 6.9 |
| Ocupación demandante | 15.5 | 16.3 | 16.0 | 15.4 | 14.8 |
| Subocupación | 10.0 | 11.1 | 11.0 | 10.9 | 9.4 |
| Subocupación demandante | 6.9 | 7.7 | 7.6 | 7.1 | 6.3 |
| Subocupación no demandante | 3.1 | 3.5 | 3.4 | 3.8 | 3.1 |
| Fuente: INDEC, Encuesta Permanente de Hogares. | |||||
| Datos ponderados. | |||||